跳到主要内容

hostapd

sudo systemctl unmask hostapd

配置 hostapd (/etc/hostapd/hostapd.conf)

macaddr_acl=0					   # 可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;
# accept_mac_file:指定允许MAC列表文件所在;
# deny_mac_file:指定禁止MAC列表文件所在;
auth_algs=1 # 采用 OSA 认证算法
ignore_broadcast_ssid=0
wpa=3 # 指定 WPA 类型
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
#wpa_pairwise=CCMP TKIP
rsn_pairwise=CCMP
wpa_passphrase=ap_password # 连接 ap 的密码
driver=nl80211 # 设定无线驱动
interface=wlan0 # 接入点设备名称
hw_mode=g # 指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g
channel=9 # 指定无线频道
ssid=ap_name # 连接 ap 的名字

注意:此处可能会报错
Could not set interface wlan0 flags (UP): Operation not possible due to RF-kill
wlan0: Could not connect to kernel driver
Failed to set beacon parameters
wlan0: Could not connect to kernel driver
解决方法是执行下面的命令

rfkill unblock wifi

killall wpa_supplicant

使用 iptables 设置转发

iptables -t nat -I POSTROUTING -o usb0 -j MASQUERADE	
iptables -A FORWARD -s 10.42.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.42.0.0/24 -j ACCEPT
iptables -t filter -A INPUT -p udp -m udp -j ACCEPT


sudo iptables -t nat --line-numbers -L -n

其中第一条表示将通过本机的转发数据包从eth0(外网)这个网卡发出去,另外两条表示只转发192.168.1.0/24这个网段过来的数据包,这个网段正好是wlan0其它设备连上本机以后分配的网段。

打开 内核的 ip 转发功能

echo "1" > /proc/sys/net/ipv4/ip_forward

vim /etc/sysctl.conf
#添加或修改这样一段:
net.ipv4.conf.default.rp_filter = 1
#然后执行命令
sysctl -p